Intelligent ranking of search results

ABSTRACT

A method and system for intelligently ranking search results may include receiving a search request containing one or more terms for performing a search, providing the one or more terms for conducting a search, and receiving a search results index containing a list of a plurality of documents, each of the plurality of documents corresponding to one of the one or more terms or to one or more other terms associated with the at least one of the one or more terms. Once the search results index is received, the method and system may access a plurality of properties associated with at least one of the plurality of documents, the plurality of properties including a user category associated with the at least one of the plurality of documents, calculating a relevance score for the at least one of the plurality of documents based on at least one of the plurality of properties, selecting a subset of the plurality of documents for presenting to a user based at least on the calculated relevance score, and providing the subset of plurality of documents for presenting to the user.

BACKGROUND

In order to locate a document of interest, users often conduct adocument search of a storage medium where they believe the desireddocument may be stored. With the enormous number of documents stored intypical storage mediums, however, a document search may result in asignificant number of search results. This is particularly the case inenterprise settings or other cloud-based storage systems where asignificantly large number of documents are stored and accessible tousers. Providing a large number of search results to a user may resultin the user having to spend a lot of time reviewing the search resultsto locate the desired document. Moreover, inaccurate and efficientsearching may result in the user having to conduct multiple documentsearches (e.g., entering alternative queries, rephrasing and the like)to find the document the user is seeking. This may lead to userfrustration and inefficiency. Furthermore, providing a large number ofsearch results from a search service to a client device and/orconducting multiple searches may require significant memory, processorand bandwidth resources.

Hence, there is a need for improved systems and methods of enhancingintelligent ranking of search results provided to a user.

SUMMARY

In one general aspect, the instant application describes a dataprocessing system for receiving a search request containing one or moreterms for performing a search, providing the one or more terms to asearch engine for conducting a search, receiving a search results indexcontaining a list of a plurality of documents from the search engine,each of the plurality of documents corresponding to at least one of theone or more terms or to one or more other terms associated with the atleast one of the one or more terms, accessing a plurality of propertiesassociated with at least one of the plurality of documents, theplurality of properties including a user category associated with the atleast one of the plurality of documents, calculating a relevance scorefor the at least one of the plurality of documents based on at least oneof the plurality of properties, selecting a subset of the plurality ofdocuments for presentation based at least on the calculated relevancescore, and providing the subset of the plurality of documents forpresentation.

In yet another general aspect, the instant application describes amethod for intelligently ranking search results. The method may includereceiving a search request containing one or more terms for performing asearch, providing the one or more terms to a search engine forconducting a search, receiving a search results index containing a listof a plurality of documents from the search engine, each of theplurality of documents corresponding to at least one of the one or moreterms or to one or more other terms associated with the at least one ofthe one or more terms, accessing a plurality of properties associatedwith at least one of the plurality of documents, the plurality ofproperties including a user category associated with the at least one ofthe plurality of documents, calculating a relevance score for the atleast one of the plurality of documents based on at least one of theplurality of properties, selecting a subset of the plurality ofdocuments for presentation based at least on the calculated relevancescore, and providing the subset of the plurality of documents forpresentation.

In a further general aspect, the instant application describes acomputer readable storage media on which are stored instructions thatwhen executed cause a programmable device to receive a search requestcontaining one or more terms for performing a search, providing the oneor more terms for conducting a search, receive a search results indexcontaining a list of a plurality of documents, each of the plurality ofdocuments corresponding to at least one of the one or more terms or toone or more other terms associated with the at least one of the one ormore terms, access a plurality of properties associated with at leastone of the plurality of documents, the plurality of properties includinga user category associated with the at least one of the plurality ofdocuments, calculate a relevance score for the at least one of theplurality of documents based on at least one of the plurality ofproperties, select a subset of the plurality of documents forpresentation based at least on the calculated relevance score, andprovide the subset of the plurality of documents for presentation.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter. Furthermore,the claimed subject matter is not limited to implementations that solveany or all disadvantages noted in any part of this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The figures depict one or more implementations in accord with thepresent teachings, by way of example only, not by way of limitation. Inthe figures, like reference numerals refer to the same or similarelements. Furthermore, it should be understood that the drawings are notnecessarily to scale.

FIG. 1 illustrates an example system in which aspects of this disclosuremay be implemented.

FIG. 2 illustrates an example data structure for keeping track of useractivity in a document.

FIGS. 3A-3B illustrate example properties retrieved for a document tocalculate a relevance score.

FIG. 4 is an example graphical user interface (GUI) screen fordisplaying search results to a user.

FIG. 5 is a flow diagram depicting an exemplary method for intelligentlyranking search results based on, among other things, properties ofdocuments identified in search results.

FIG. 6 is a block diagram illustrating an example software architecture,various portions of which may be used in conjunction with varioushardware architectures herein described.

FIG. 7 is a block diagram illustrating components of an example machineconfigured to read instructions from a machine-readable medium andperform any of the features described herein.

DETAILED DESCRIPTION

In the following detailed description, numerous specific details are setforth by way of examples in order to provide a thorough understanding ofthe relevant teachings. It will be apparent to persons of ordinaryskill, upon reading this description, that various aspects can bepracticed without such details. In other instances, well known methods,procedures, components, and/or circuitry have been described at arelatively high-level, without detail, in order to avoid unnecessarilyobscuring aspects of the present teachings.

With the significant number of documents stored in enterprise computersystems, local devices having large storage capacities, andcloud-storage solutions that offer the ability to store a significantlylarge number of documents, locating a relevant document through adocument search has become challenging. That is because, when millionsof documents are stored and accessible to a user, a typical documentsearch may result in a significant number of search results. In suchinstances, providing the entire search results to the user may lead toan extensive amount of time spent by the user reviewing the results tofind the desired document. This may also lead to conducting multiplesearches (e.g., entering different queries, rephrasing search terms,using different spellings and the like) to locate the document the useris searching for. This process is inconvenient and inefficient forusers. Furthermore, processing multiple searches and/or processing alarge number of search results may require significant memory,processing and bandwidth needs which may lead to delays.

To reduce the amount of time and resources needed to process and presentsearch results to the user, mechanisms have been developed foridentifying and presenting more relevant search results from among theentire search results. This often involves ranking the search resultsbased on their relevance. Once the search results are ranked, a subsetof the results that is deemed to be most relevant to the user may beselected for presenting to the user. Current relevance rankingmechanisms may make use of certain contextual information relating tothe user to rank search results according to their relevancy. Thecontextual information may include features such as individualsassociated with the user. This contextual information may be used toidentify documents in the search results that were last modified oraccessed by individuals associated with the user. While this may behelpful in providing some relevancy ranking, it does not provide anaccurate representation of all documents the user is associated with oris interested in. This type of relevance ranking merely examines thelast access to or the last modification of the document and does nottake into account other types of activities that may have occurred withrespect to a document. For example, a document that is opened mistakenlyand immediately closed may receive the same relevance value as adocument that is read carefully for hours, because the only parameteravailable for examination is the last access to the document. This mayresult in incorrectly ranking documents and/or providing more searchresults to the user than necessary. As a result, the search resultsprovided to the user may have the technical problem of not beingrelevant and as such being unreliable. This may require the user toperform multiple searches to locate their desired document, thus causinginefficiencies for both the user and the system.

To address these technical problems and more, in an example, thisdescription provides a technical solution for intelligently rankingsearch results based on, among otherthings, a history of userrelationships with a document, a history of certain relevant activitiesperformed on the document, an activity level of the document and/or alifecycle stage of the document. To do so, techniques may be used foraccessing the history of user relationships, the relevant activitiesperformed on the document and the lifecycle stage of documentsidentified in a search result. To achieve this, information about users'activities in a document may be collected. This information may then beanalyzed to determine one or more user categories associated with thedocument based on users' activities, identify certain activities thatare useful for relevance ranking, and determine the activity leveland/or lifecycle stage of the document. The determined information maythen be transmitted for storage with the document. The information maybe stored as metadata for the document and may be added as newproperties to the document such that it can be accessed during relevanceranking.

As will be understood by persons of skill in the art upon reading thisdisclosure, benefits and advantages provided by such implementations caninclude, but are not limited to, a solution to the technical problems ofunreliable and inaccurate search results provided to users andsignificant time and resources required for conducting multiple searchesand/or processing numerous search results until a desired document islocated. Technical solutions and implementations provided hereinoptimize and improve the accuracy of the process of ranking relevantsearch results. This leads to providing more accurate and reliablesearch results to users in need of locating documents quickly andefficiently. The benefits provided by these solutions provide moreuser-friendly applications and enable users to increase theirefficiency. Furthermore, because more relevant search results areprovided, the solutions may reduce both the number of search resultsprovided and the number of searches conducted to locate a desiredresult. This can significantly reduce processor, memory and/or networkbandwidth usage and decrease time to success.

As a general matter, the methods and systems described herein mayinclude, or otherwise make use of, a machine-trained model to identifydata related to a document. Machine learning (ML) generally includesvarious algorithms that a computer automatically builds and improvesover time. The foundation of these algorithms is generally built onmathematics and statistics that can be employed to predict events,classify entities, diagnose problems, and model function approximations.As an example, a system can be trained using data generated by an MLmodel in order to identify patterns in user activity, determineassociations between tasks and users, identify categories for a givenuser, and/or identify activities associated with document relevance.Such training may be made followingthe accumulation, review, and/oranalysis of user data from a large number of users overtime, and whichis configured to provide the ML algorithm (MLA) with an initial orongoing training set. In addition, in some implementations, a userdevice can be configured to transmit data captured locally during use ofrelevant application(s) to a local or remote ML program and providesupplemental training data that can serve to fine-tune or increase theeffectiveness of the MLA. The supplemental data can also be used toimprove the training set for future application versions or updates tothe current application.

In different implementations, a training system may be used thatincludes an initial ML model (which may be referred to as an “ML modeltrainer”) configured to generate a subsequent trained ML model fromtraining data obtained from a training data repository or fromdevice-generated data. The generation of both the initial and subsequenttrained ML model may be referred to as “training” or “learning.” Thetraining system may include and/or have access to substantialcomputation resources for training, such as a cloud, including manycomputer server systems adapted for machine learning training. In someimplementations, the ML model trainer is configured to automaticallygenerate multiple different ML models from the same or similar trainingdata for comparison. For example, different underlying ML algorithms,such as, but not limited to, decision trees, random decision forests,neural networks, deep learning (for example, convolutional neuralnetworks), support vector machines, regression (for example, supportvector regression, Bayesian linear regression, or Gaussian processregression) may be trained. As another example, size or complexity of amodel may be varied between different ML models, such as a maximum depthfor decision trees, or a number and/or size of hidden layers in aconvolutional neural network. As another example, different trainingapproaches may be used for training different ML models, such as, butnot limited to, selection of training, validation, and test sets oftraining data, ordering and/or weighting of training data items, ornumbers of training iterations. One or more of the resulting multipletrained ML models may be selected based on factors such as, but notlimited to, accuracy, computational efficiency, and/or power efficiency.In some implementations, a single trained ML model may be produced.

The training data may be continually updated, and one or more of the MLmodels used by the system can be revised or regenerated to reflect theupdates to the training data. Over time, the training system (whetherstored remotely, locally, or both) can be configured to receive andaccumulate more training data items, thereby increasing the amount andvariety of training data available for ML model training, resulting inincreased accuracy, effectiveness, and robustness of trained ML models.

FIG. 1 illustrates an example system 100, in which aspects of thisdisclosure may be implemented. The system 100 may include a sever 110which may contain and/or execute a user categorizing service 140, alifecycle determination service 142, and a search service 114. Theserver 110 may operate as a shared resource server located at anenterprise accessible by various computer client devices such as clientdevice 120. The server 110 may also operate as a cloud-based server foroffering global user categorizing services, lifecycle determinationservices and/or search services. Although shown as one server, theserver 110 may represent multiple servers for performing variousdifferent operations. For example, the server 110 may include one ormore processing servers for performing the operations of the usercategorizing service 140, the lifecycle determination service 142, andthe search service 114.

The user categorizing service 140 may provide intelligent categorizationof users' roles with respect to a document over time. This may beachieved by receiving a usage signal from a document, determining basedon the information provided in the usage signal one or more usercategories for the user, identifying certain activities performed on thedocument that may be relevant to search services and providing theidentified user categories and relevant activities for storage inassociation with the document. As described further with respect to FIG.2, the usage signal may include detailed information about the types ofactivities performed on a document by a user within a given time period.

The lifecycle determination service 142 may provide intelligentdetermination of a document's lifecycle stage and/or activity level. Thelifecycle determination service 142 may receive information relating tothe one or more user categories identified by the user categorizingservice 140 and determine based on the identified user categories anappropriate lifecycle stage for the document. Furthermore, the lifecycledetermination service 142 may determine an appropriate activity levelfor the document based on the activities received as part of the usagesignal.

The search service 114 may conduct intelligent searching of one or moredata stores to provide relevant search results in response to a searchrequest. The search service 114 may include a ranking engine 116 forranking search results based on relevance of the results to the user bytaking into account a variety of contextual information and documentproperties. In one implementation, the ranking engine 116 is integratedwith the search service 114. The search service 114 may also include abuilt-in search engine 118 for executing a search. Alternatively and/oradditionally, the search service 114 may utilize one or more externalsearch engines (not shown) for executing a search. In response to asearch request, the search engine 118 may conduct a document search ofone or more data stores (e.g., data stores specified in the searchrequest) and provide a search results index containing a list ofdocuments to the search service 114. The search service 114 may thenprovide the search results index to the ranking engine 116 to enablerelevance ranking of the search results.

The server 110 may be connected to or include a storage server 150containing a data store 152. The data store 152 may function as arepository in which documents and/or data sets (e.g., training datasets) may be stored. One or more ML models used by the user categorizingservice 140, the lifecycle determination service 142, and/or the searchservice 114 may be trained by a training mechanism 144. The trainingmechanism 144 may use training data sets stored in the data store 152 toprovide initial and ongoing training for each of the models. In oneimplementation, the training mechanism 144 may use labeled training datafrom the data store 152 to train each of the models via deep neuralnetwork(s). The initial training may be performed in an offline stage.Additionally and/or alternatively, the one or more ML models may betrained using batch learning.

It should be noted that the ML model(s) categorizing the useractivities, determining document lifecycle stages and/or ranking searchresults may be hosted locally on the client device 120 or remotely,e.g., in the cloud. In one implementation, some ML models are hostedlocally, while others are stored remotely. This enables the clientdevice 120 to provide some categorization, lifecycle determinationand/or search ranking even when the client is not connected to anetwork.

The server 110 may also be connected to or include one or more onlineapplications 112. Applications 112 may be representative of applicationsthat provide access to and/or enable creation or editing of one or moredocuments, as well as searching applications. As such, applications 112may include an application hosted by the search service 114. Examples ofsuitable applications include, but are not limited to, a documentmanagement application, a file sharing application, a word processingapplication, a presentation application, a note taking application, atext editing application, an email application, a spreadsheetapplication, a desktop publishing application, a digital drawingapplication, a communications application and a web browsingapplication.

A client device 120 may be connected to the server 110 via a network130. The network 130 may be a wired or wireless network(s) or acombination of wired and wireless networks that connect one or moreelements of the system 100. The client device 120 may be a personal orhandheld computing device having or being connected to input/outputelements that enable a user to interact with an electronic document 130on the client device 120 and to submit a search request via, forexample, a user interface (UI) displayed on the client device 120.Examples of suitable client devices 120 include but are not limited topersonal computers, desktop computers, laptop computers, mobiletelephones, smart phones, tablets, phablets, digital assistant devices,smart watches, wearable computers, gaming devices/computers,televisions, and the like. The internal hardware structure of a clientdevice is discussed in greater detail in regard to FIGS. 6 and 7.

The client device 120 may include one or more applications 126. Anapplication 126 may be a computer program executed on the client devicethat configures the device to be responsive to user input to allow auser to interactively view, generate and/or edit the document 130 and/orto enable the user to conduct a document search. The document 130 andthe term document used herein can be representative of any file that canbe stored in a storage medium and located via a content search. Examplesof documents include but are not limited to word-processing documents,presentations, spreadsheets, notebooks, websites (e.g., SharePointsites), digital drawings, emails, media files and the like. Theelectronic document 130 may be stored locally on the client device 120,stored in the data store 152 or stored in a different data store and/orserver.

The application 126 may process the document 130, in response to userinput through an input device, to create, view and/or modify the contentof the electronic document 130, by displaying or otherwise presentingdisplay data, such as a GUI which includes the content of the electronicdocument 130, to the user. In another example, the application 126 mayenable the user to provide input via an input/output element to requesta document search of one or more storage mediums. Examples of suitableapplications include, but are not limited to a document managementapplication, a file sharing application, a word processing application,a presentation application, a note taking application, a text editingapplication, an email application, a spreadsheet application, a desktoppublishing application, a digital drawing application and acommunications application.

The client device 120 may also access applications 112 that are run onthe server 110 and provided via an online service as described above. Inone implementation, applications 112 may communicate via the network 130with a user agent 122, such as a browser, executing on the client device120. The user agent 122 may provide a UI that allows the user tointeract with application content and electronic documents stored in thedata store 152 via the client device 120. The user agent 122 may alsoprovide a UI that enables the user to conduct a document search. In someexamples, the user agent 122 may be a dedicated client application thatprovides a UI to access documents stored in the data store 152 and/or invarious other data stores. A document search may include searching byone or more keywords, natural language, and/or other terms.

In one implementation, the client device 120 may also include a usercategorizing engine 124 for categorizing a user's roles with respect todocuments, such as the electronic document 130, over time and/oridentifying activities performed in documents that may relate tosearching. In an example, the local user categorizing engine 124 mayoperate with the applications 126 to provide local user categorizingservices. For example, when the client device 120 is offline, the localuser categorizing engine may make use of one or more local repositoriesto provide categorization of user activities for a document. In oneimplementation, enterprise-based repositories that are cached locallymay also be used to provide local user categorization. In an example,the client device 120 may also include a lifecycle determination engine128 for determining the current lifecycle stage and/or activity level ofa document such as the document 130. The lifecycle determination engine128 may use the amount and/or types of activities performed on thedocument within a given time period along with the identified usercategories (e.g., received from the local user categorizing engine 124and/or the user categorizing service 140) to determine which lifecyclestage and/or activity level the document is currently in.

It should be noted that the local user categorizing engine 124 and theuser categorizing service 140 may receive usage signals from documentscreated or edited in a variety of different types of applications 126 or112. Once usage signals are received, the local user categorizing engine124 and/or the user categorizing service 140 may reason over thereceived usage signals regardless of the type of application theyoriginate from to identify appropriate user categories. It should alsobe noted that each of the search service 114, ranking engine 116, usercategorizing service 140, lifecycle determination service 142, usercategorizing engine 124, lifecycle determination engine 128, and localsearch service 132 may be implemented as software, hardware, orcombinations thereof.

In one implementation, the client device 120 may include a local searchservice 132 for conducting a search for documents stored in a localstorage medium (e.g., local memory of the client device 120). The localsearch service 132 may include a local ranking engine and a local searchengine. Alternatively, the local search service 132 may make use of theranking engine 116 and/or search engine 118 for conducting a search ofthe local storage medium and/or ranking the identified search resultsfor relevance.

When the client device 120 is utilized by a user to submit a searchrequest (e.g., via the user agent 122, applications 112 or applications126), along with one or more search terms identified in the searchrequest, additional contextual information that may be useful forrelevance ranking may also be transmitted to the respective searchservice (e.g., the local search service 132 or search service 114). Theadditional contextual information may include information about theuser, people, teams, groups, organizations and the like that the user isassociated with and/or sites or applications the user frequently visits.The contextual information may also include the degree to which the useris associated with each of the items in the data structure. For example,the contextual information may include a list of people the user hasrecently collaborated with (e.g. has exchanged emails or othercommunications with, has had meetings with, or has worked on the samedocuments with), people on the same team or group as the user, and/orpeople working on a same project as the user, and the number of timesand/or length of time the user has collaborated with or has beenassociated with each person on the list. This information may beretrieved from one or more remote or local services, such as a directoryservice, a collaboration service, a communication service, and/or aproductivity service background framework.

The searching application (e.g., an application that provides a searchoption for conducting a search) may retrieve this information to providethe relevant contextual information for the search. The items retrievedmay be related to a predetermined period of time (e.g., items may beretrieved for one week or one month preceding the time at which thesearch request was submitted). In this manner, more recent and likelymore relevant contextual information may be collected and used forrelevance ranking. Furthermore, once information is retrieved, the itemsthat are most closely associated with the user may be identified. Forexample, if the user has collaborated with 30 people in the last week,only the top 10 may be included as contextual information for relevanceranking. Alternatively and/or additionally, only the items that meetthreshold requirements are included in the contextual information. Forexample, only people with which the user has collaborated more than athreshold number of times (e.g., more than 5) may be included. Thethreshold number may be predetermined or may dynamically change based onone or more factors. In one implementation, the threshold number may beidentified by one or more ML models.

In some embodiments, once the contextual information is retrieved for auser, it is stored locally and/or remotely and updated as needed (e.g.,periodically orwhen it is determined that one or more changes relatingto the contextual information have occurred). For example, a person'sdegree of association with the user may change if a new group of peoplehave interacted with the user or with documents and/or sites associatedwith the user more frequently in recent times. Additionally and/oralternatively, a time decay of the degree of association for each itemof contextual information may be implemented. For example, a person'sdegree of association may be continuously decreased if the person hasnot interacted with the user or with documents and/or sites associatedwith the user over a particular period of time.

Once the contextual information is retrieved and/or updated as needed,it can be submitted along with any search requests received from theuser and/or retrieved from a data store by the search service uponreceiving the search request. After the contextual information issubmitted, the search service (e.g., local search service 132 or searchservice 114) may determine a relevance value for items of contextualinformation based on the degree with which an item is associated withthe user, among other factors. In one implementation, the relevancevalue is determined by using one or more ML models that take intoaccount how various items may relate to relevance of search results. Inan alternative implementation, the relevance value is determined by thesearching application and submitted as part of or separately from thecontextual information to the search service. The relevance value may bebased on an order of connection, or a closeness of relationship, betweeneach item and the user.

In one implementation, the contextual information may be generated bythe search service. For example, upon receiving a search request from auser, the search service may retrieve information associated with theuser from a directory service, a collaboration service, a communicationservice, and/or a productivity service background framework. The searchservice may then calculate the relevance value based on an order ofconnection between each item retrieved and the user. In an alternativeimplementation, the contextual information may be stored in an externaldata store and retrieved by the search service.

Once the search service 114 or 132 has received a search request and thecontextual information (or has generated the contextual information) andthe relevance values have been determined, the search service 114 maysubmit a search request to the search engine 118 (or to an externalsearch engine). The request may include a search query containing one ormore terms for which a search should be conducted. In oneimplementation, in addition to one or more search terms received fromthe user, the search terms submitted to the search engine 118 mayinclude associated words such as synonyms, alternative spellings, and/orsemantically similar words. Alternatively, the search engine 118 mayreceive the one or more search terms submitted by the user and identifyone or more words associated with the search terms (e.g. by using anatural language processing model) to include in the search.Furthermore, the search request may include a designation of the datastores which should be searched using the terms.

In response, the search engine may return a search results indexcontaining a list of documents. The list may include documents that arerelated to one or more of the terms specified in the search requestand/or other terms associated with the search terms. The other termsassociated with the search terms may include alternative spellings(e.g., when a term that is being searched for includes a misspelling,the search engine may also search for the correct spelling), synonyms,one or more terms commonly used with the search terms, and the like. Foreach document in the list, the search results index may include one ormore properties of the documents. These properties may include the usercategories, lifecycle stages, activity level and/or relevant activitiesperformed on each document, as further discussed below.

When searching large data stores, the search results index may containnumerous documents. If the search service 114 were to submit all of thesearch results to the client device 120, a significant amount of memory,processing power and bandwidth may be needed. Furthermore, once theresults are presented to the user, it may take the user a significantamount of time to review all the results and find the desired document.To mitigate this, the present techniques utilize the ranking engine torank the documents in the search results index based on their relevanceto the user.

The ranking engine 116 (or the local ranking engine) may then comparethe contextual information with the properties of the documents in thesearch results index to identify documents in the search results indexthat correspond with the contextual information. For example, theranking engine may determine based on the contextual information thatthe last reader of a document in the search results index is a personassociated with the user or that a document in the search results indexwas shared one or more times between two people associated with theuser. The ranking engine may then compute a relevance score for one ormore documents based on the comparison, among other factors, andsubsequently rank the search results based on the computed scores. Insome embodiments, the relevance scores may be calculated based on therelevance value for a property associated with the user and a weight ofthe associated property. For example, if the contextual informationidentifies an individual that has a relevance value of 3.2 and is aneditor of a document within the search results index, where the editorproperty has an associated weight of 0.5, to calculate the relevancescore, the ranking engine 116 may multiply the relevance value of theperson (3.2) by the weight of the associated document property (0.5) toarrive at a value of 1.6. The value of 1.6 may be one of many valuesincluded in the computation of the relevance score of the document. Oncethe relevance score is computed, the document may then be ranked amongother documents within the search results index, based on the calculatedrelevance score. Depending on the number of documents in the searchresults index, a portion of (or a specific number of) the documents inthe search results index having the highest scores may be provided tothe user as the search results. In one implementation, the relevancescores may also be used in prioritizing the search results presented tothe user, with the documents having higher relevance scores beingdisplayed higher in the list.

Thus, in order to provide relevant search results to the user, therelevance ranking mechanisms take into account a history of documentusage. To achieve this, users' roles with respect to a document areidentified, such as when a user accesses or makes modifications to adocument. This process is discussed in detail in U.S. patent applicationSer. No. 16/746,581, entitled “Intelligently Identifying a User'sRelationship with a Document,” and filed on Jan. 17, 2020 (referred tohereinafter as “the '581 application”), the entirety of which isincorporated herein by reference.

As discussed in the '581 application, content creation/editingapplications often provide numerous commands for interacting with adocument. These commands may each be associated with a toolbar commandidentifier (TCID). In addition to offering various commands,applications may also enable user activities such as typing, scrolling,dwelling, or other tasks (i.e., non-command activities) that do notcorrespond to TCID commands. Each of the commands or non-commandactivities provided by an application may fall into a different categoryof user activity. For example, commands for changing the font,paragraph, or style of the document may be associated with formattingactivities, while inserting comments, replying to comments and/orinserting text using a track-changes feature may correspond withreviewing activities.

To categorize user activities, commands and non-command activitiesprovided by an application may be grouped into various user categories.The user categories may then be used to identify one or more attributes(e.g., usage roles) for a user at a certain time. An initial set of usercategories may include creators, authors, moderators, reviewers, andreaders. Other categories may also be created. For example, a categorymay be generated for text formatters. Another may be created for objectformatters (e.g., shading, cropping, picture styles). Yet anothercategory may be created for openers, which may include users who merelyopen and close a document or open a document but do not perform anysubstantial activities, such as scrolling or otherwise interacting withthe document.

To determine user categories and/or identify user activities that relateto search relevance, data representing commands used by the user tointeract with the document may be collected and analyzed. This mayinvolve tracking and storing (e.g., temporarily) a list of useractivities and commands performed in a document in a local or remotedata structure associated with the document to keep track of the user'sactivity and command history.

FIG. 2 depicts an example data structure 200, such as a database table,for keeping track of user activity within a session. For example, datastructure 200 may include a session start time 210 and a session endtime 240. The session start time 210 may be marked as the time the useropens a document and/or the time the user returns to an open documentafter an idle period. The session end time 240, on the other hand, maybe marked as the time the document is closed or the time the last useractivity occurs before the document becomes idle. In between the sessionstart time 210 and the session end time 240, the data structure 200 maybe used to keep track of user activities by recording activityidentifiers 230 (e.g., TCIDs) associated with each separate useractivity. Furthermore, in order to identify the user who performs theactivities, the data structure 200 may store the user ID 220 of theperson interacting with the document.

Once a determination is made that a session end time has been reached,the information collected during the session may be transmitted as partof a usage signal to the user categorizing service or engine foridentifying one or more categories for the user for the correspondingsession and/or one or more activities performed on the document thatrelate to search relevance. The usage signal may be a high-fidelitysignal which includes detailed information about the types of activitiesperformed on the document within a given time period.

To reduce load, the usage signal may be transmitted per session or onanother periodic basis. In order to determine whether a session is anactive session (e.g., the session does not include idle time where auser stops interacting with a document for an extended period of time),the application may keep track of the amount of time passed between useractivities. For example, if there has been no user activity in an opendocument or if the window containing the document is out of focus for agiven time period (e.g., 10 minutes), the application may determine thatan active session has ended. This may result in the applicationidentifying the time at which the last user activity occurred as thesession end time. The length of an active session may also be trackedand stored as an item related to search relevance. For example, anactive session length may relate to activities such as reading orreviewing where the amount of time spent on the document may beassociated with the importance of the document to the reader or reviewer(e.g., if the last person who read the document spent a significantamount of time actively reading the document, it is likely that thedocument was important to the reader).

Once the usage signal containing the user activity information istransmitted (e.g., upon a document closure or end of a session), thecategorizing service may analyze the user activity and perform anintelligent grouping of the activity to identify categories to which theuser's activity may belong. The categorizing may be done based on thenumber of user activities and the categories to which they belong. Thedetermination may be made based on the number and/or portion (e.g.,percentage) of user activities associated with each category. Forexample, if a significant majority of the user's activities falls in onecategory, the second category may be ignored (e.g., 95% of activitiesrelate to reading, but the user also added a period to the body of thecontent). The determination may also depend on the most prominent usercategory. For example, if the majority of the user's activities relateto authoring, but the user also performs moderator activities such aschanging the font and paragraph numbering, the moderator activities arelikely part of the process of authoring (e.g., the author often alsoedits the document) and as such may be overlooked. Identification of themost relevant user categories may be made by utilizing an ML model thatcan intelligently identify the most relevant categories for each usersession.

In addition to identifying the user categories for each session, thelist of user activities performed in the document may be examined toidentify activities that may be related to search relevance. Certainactivities performed on a document may signify the importance and/orusefulness of the document to other users. For example, clicking on alink within the document, copying content (e.g., text, drawings, orimages) from the document, printing the document, or presenting thedocument in a meeting may indicate that the document was useful and/orof significance to the user. Thus, when such actions have been takenwith respect to the document, the likelihood that the document may berelevant to a searching user may be increased.

To take this information into account, a list of relevant activities maybe generated. Relevant activities may include activities performed onthe document that are important, useful and/or otherwise related tosearch relevance. In one implementation, this is achieved by utilizingone or more ML models. For example, when search results are presented tousers, user feedback (e.g., explicit feedback or implicit feedback suchas usage data) may be collected to determine which documents in thesearch results the users found most useful and correlate those documentswith activities performed within them to identify relevant activities.The user feedback may provide an initial and ongoing training data setthat is updated as more information is collected. In one implementation,this may involve collecting and using information that may be relevantto individual users. For example, different activities may signifydifferent levels of importance for each user. User interactions withsearch results may thus be collected and examined to providepersonalized relevance determinations for each user.

In addition to utilizing the user's feedback, feedback data from otherusers that are similar to the current user may also be employed. In anexample, the model may use feedback data from users with similaractivities, similar work functions and/or similar work products. Thedata consulted may be global or local to the current device. It shouldalso be noted that in collecting and storing any user activity dataand/or user feedback, care must be taken to comply with all privacyguidelines and regulations. For example, user feedback may be collectedand/or stored in such a way that it does not include any useridentifying information and is stored no longer than necessary.Furthermore, options may be provided to seek consent (opt-in) from usersfor collection and use of user data, to enable users to opt-out of datacollection, and/or to allow users to view and/or correct collected data.

To ensure that relevant activities are identified correctly for eachuser, the one or more models for generating a list of relevantactivities may include a personalized mode, a global model and/or ahybrid model. Some activities may be determined to be relevantactivities across the population. For those activities, a global modelmay be used to identify the relevant activities. The global model mayidentify activities relevant to a large number of users and averagethose relevant activities over all users. Other activities may only berelevant to specific users. For example, if a user often changes thefont after opening a document or often searches for documents presentedin meetings, changing the font or presenting the document in a meetingmay be considered relevant activities for that user. A personalizedmodel can identify such personalized relevant activities. A hybrid modelmay be used to identify relevant activities for users that areassociated with and/or similar to the user. By using a combination ofpersonalized, hybrid and/or global models, better relevant activitiesmay be identified for a given user. Using ML models that are offered aspart of a service may ensure that the list of relevant activities can bemodified iteratively and efficiently, as needed, to continually trainthe models. However, a local relevant activity identifying engine mayalso be provided.

Once the list of relevant activities has been generated and/or modified,the list of relevant activities may be compared against user activityidentifiers received as part of the usage signal (e.g., user activityidentifier 230 of data structure 200) to determine if any activitiesperformed on the document are on the list of relevant activities. In oneimplementation, this is performed by the user categorizing service orengine. Alternatively, a separate service or local engine may beutilized for determining if relevant activities have been performed on adocument within an active session. The separate relevant activityidentifying service or local engine may be associated or incorporatedwith the search service or may function separately from the servicesearch. When a separate relevant activity identifying service or localengine is used, the usage signal may be sent to the relevant activityidentifying service or local engine, each time it is sent to the usercategorizing service.

In addition to using the usage signal, the relevant activity identifyingservice or local engine (or the user categorizing service or engine) mayalso retrieve and use information from other sources, such as one ormore applications or other documents, to identify relevant activities.For example, if the relevant activity is presenting the document in ameeting, information may be retrieved from a virtual conferencingapplication utilized to present the document. Alternatively and/oradditionally, activities within the document may be correlated withinformation from other applications or other documents to determine ifan activity qualifies as a relevant activity. For example, when theactivity is entering a presentation mode of the document, this may becorrelated with the user's calendar and/or email application todetermine if the presentation corresponds to a meeting and as such was atrue presentation as opposed to a practice or accidental one. Similarly,when the relevant activity involves sharing the document, informationabout such an activity may be provided by communication applications(e.g., an email application, a messaging application, or a collaborativework environment application). Information about printing a document maybe retrieved/provided by a document management application from which adocument may be printed. When the relevant activity is copying content,the activity may be correlated with activities received from otherdocuments used by the user to determine if the content was pasted intoanother document. This may be done to ensure that a copy activity was infact used to copy content to a different document.

After relevant activities are identified for a session, they may be sentalong with, as part of, or separately from a user category signal to astorage medium for storage. Both the user category signal and therelevant activities may be stored for future use in determining thedocument's relevance in search results. The process of storing the usercategory signal and the relevant activities may involve sending the usercategory signal and the relevant activities back to the client device(or any other device on which the document is stored) via the network.The relevant activities sent for storage may include the user activityidentifier, document ID, user ID, and/or activity date and time.

In one implementation, the user category signal may include the usercategory, the document ID, user ID, session date and time, and/orsession length. The user category may be the category identified asbeing associated with the user's activity. The possible categories mayinclude one or more of creator, author, reviewer, moderator, and reader.The document ID may be a file identifier that can identify the documentwith which the user activity is associated. This may enable the usercategory signal information to be attached to the file. In oneimplementation, the user category signal information is stored asmetadata for the file. The user ID may identify the user who performedthe user activities during the session. This may enable the system toproperly attribute the identified category of operations to theidentified user. The session length may be the length of the activesession and may be stored and used as a property related to relevance ofthe document.

In one implementation, once the user category signal is available, itmay be sent to the lifecycle determination service and/or the locallifecycle determination engine for determining the document's currentlifecycle stage. In addition to the user category signal, the lifecycledetermination service and/or the local lifecycle determination enginemay receive data relating to the types and quantity of activitiesperformed in the document within a given time period (e.g., the lastactive session or the last few active sessions). The lifecycledetermination service and/or the local lifecycle determination enginemay use the activity data to determine a level of activity for thedocument. This may be done by examining the number of activities (e.g.,command and non-command tasks) within a given period and determiningwhere the activity level falls among a variety of predetermined levelsof activity (e.g., non-active, low activity, active, very active,extremely active).

To determine the level of activity, in addition to the number ofactivities performed, the types of activities may also be taken intoconsideration. Some activities may be more important than others withinthe context of the application. For example, in a word-processingapplication, pressing the delete button multiple times to delete asentence may result in a larger number of activities than pasting aparagraph into the document. However, pasting the paragraph may be moreimportant or substantial than deleting a sentence. To address this,different weights may be assigned to each activity in an application.The weights may be predetermined or may be set by one or more ML modelsused to identify the importance of each activity within the application.In some embodiments, once the weights are determined, the lifecycledetermination service and/or the local lifecycle determination enginemay calculate a weighted sum of the activities. The weighted sum maythen be compared to predetermined activity levels (e.g., non-active, lowactivity, active, very active, extremely active) to determine whichactivity level the weighted sum falls into. It should be noted that thelevel of activity may change with time. For example, a document may havebeen identified as very active the last time it was modified. That samedocument may not be used for an extended period of time after the lastmodification. To more accurately capture the current activity level ofthe document, in one implementation, a mechanism may be used thatconsiders both the level of activity and the amount of time that haspassed since the last activity and updates the activity levelaccordingly.

Once calculated and/or updated, the activity level may then be used indetermining the relevance of the document to a searching user when asearch is performed. For example, if a document is identified as beingextremely active, that document may be identified as more relevant tothe searcher than one that is non-active.

In addition to the activity level, the lifecycle determination serviceand/or the local lifecycle determination engine may also determine alifecycle stage for the document based on the user category signal,activity level, or both. In one implementation, this may involveexamining the user category included in the user category signal todetermine a lifecycle stage the user category corresponds with. In anexample, the lifecycle stages of the document may correspond with theuser categories and may include creation, authoring, editing, reviewing,and reading, among others. For example, when the user signal indicatesthat the identified user category is the reviewer, the lifecycle stagemay be identified as the reviewing stage. Alternatively or additionally,the activity level of the document may be taken into account whendetermining the lifecycle stage. For example, if a correspondencebetween activity levels and the stages of the documents has been shown(e.g., the editing stage corresponds with high activity), the activitylevel may be considered to identify the lifecycle stage.

The user category signal, the activity level, the lifecycle stage and/orrelevant activities that are identified in a session may be sent to thestorage medium to be stored, e.g., in a folder such as a signals folderfor future use. In an example, new properties for the document may bestored (e.g., in a folder associated with the document or the signalsfolder) based on the user category signal, the activity level, thelifecycle stage and/or relevant activities. The properties may beconfigured for propagation to secondary documents, in whole or in part.In this manner, a copy made of the document may inherit some or all ofthe properties of the original document.

When a search engine provides a search results index containing a listof documents, the ranking engine may retrieve the properties stored foreach document on the list to calculate a relevance score for eachdocument. FIGS. 3A-3B depict example properties associated with adocument that may be used to calculate its relevance score. FIG. 3Aillustrates a data structure 300A, such as a database table, containingfactors that may be related to the document's relevance in searchresults. Data structure 300A may include a document name 310, a level ofactivity 320 and a lifecycle stage 330. The document name 310 may be thefile name utilized to store the document. Alternatively, the documentname may be a document ID (e.g., a file identifier that is differentthan the file name) used to identify the document. In oneimplementation, the document name includes information about thelocation at which the document is stored. Alternatively or additionally,the properties retrieved may include a link to the storage location atwhich the document is stored.

The level of activity 320 may contain the most recent level of activityidentified for the document, which may indicate how active the documentis and may be associated with a weight (not shown) used in calculatingthe relevance score for the document. The lifecycle stage 330 maycontain the most recent identified lifecycle stage of the document. Thelifecycle stage may provide additional information for determining therelevance of the document. Each lifecycle stage may be associated with arespective weight (not shown).

The data structure 300A may also include user categories 340 whichcontains a history of user categories identified for the document alongwith information relating to the user associated with each usercategory. For example, the user categories 340 may include thecategories that have been identified for the document since its creationor for a particular time period and may include a user ID associatedwith each identified category. In one implementation, all of the usercategories may be used in calculating the relevance score.Alternatively, one or more of the more recent user categories may beutilized. The different user categories may be associated with differentrelevance values or different weights. For example, reading may have ahigher weight than creating. To allow for weighting each user categoryaccording to its recency, the data structure 300A may also include thesession date/time 350 for each identified user category. The sessiondate/time 350 may be associated with a weight given to the usercategories (e.g., different weights may be given to session date/timesthat fall within different time periods). For example, a sessiondate/time that falls within a 24-hour time frame of when the search wasconducted may receive a higher weight than a session date/time thatoccurred two months before the search was conducted.

Another factor that may be used to determine the relevance of thedocument is the session duration 360. The session duration 360 mayprovide a session length for each session, when applicable. The sessionduration 360 may only apply to activities where the amount of time spenton the activity relates to the importance of the application. Forexample, the amount of time creating a document (e.g., creating a blankdocument and storing it) may not be relevant and as such may not bestored and/or retrieved. The session duration, when provided, maydirectly relate to the utility of the document. As such, the sessionduration may have a weight associated with it for calculating therelevance score.

FIG. 3B illustrates a data structure 300B, such as a database table, forstoring a list of relevant activities for a given document. Datastructure 300B may include a document name 310, relevant activities 370,activity times 380 associated with each relevant activity 370 and userIDs 390 associated with each relevant activity 370. As discussed withrespect to FIG. 3A, the document name 310 may be the file name utilizedto store the document or a document ID used to identify the document.The relevant activities 370 may include one or more activities performedon the document that qualify as relevant activities. As discussed above,the types of activities in various applications that relate to relevanceof a document may be predetermined. Once information about activitiesperformed with respect to a document is received (e.g., via the usagesignal), relevant activities are identified by comparing the list ofactivities performed in the document with the predetermined types ofactivities identified as being relevant. These activities are thenstored as properties of the document and may be retrieved and/oraccessed when needed (e.g., when performing search results ranking).

Each relevant activity 370 may be associated with a weight (not shown).The weight may be predetermined for each activity and may relate to thelikelihood of the activity indicating that the document is relevant. Theactivity time 380 may also be associated with a weight (not shown) forcalculating the relevance score of the document. Alternatively oradditionally, the weight of a relevant activity may be multiplied by therelevance value of the user 390 performing the activity and theresulting number may be used as one of the factors in calculating thefinal relevance score of the document.

A relevant activity, such as those illustrated in the relevant activity370, may be used in ranking the document at multiple different levels,each of which may correspond to different weights. These levels includepersonal, collaborative and/or global. At the personal level, therelevant activity may indicate that the searching user has performed therelevant activity. At the collaborative level, the relevant activity mayhave been performed by people associated with the searching user (e.g.,one or more people the searching user works with have printed thedocument). At the global level, the relevant activity may indicate thata large number of people (regardless of whether they are associated withthe user or not) may have performed the relevant activity.

In one implementation, each property having a weight may be multipliedby a relevance value and the relevance score may be calculated as aweighted sum of the relevance values. For example, for a document havinga high level of activity, a user category of reader with a recent andlong session duration and a recent relevant activity, the relevancescore may be calculated by multiplying the relevance value associatedwith the user with the weight associated with the high level ofactivity, the weight associated with the reader category, the weightassociated with a long session, the weight associated with a recentsession, and the weight associated the recent relevant activity. Therelevance score may then be calculated by adding the weighted relevancevalues together to arrive at the final score. Many other factors mayalso be used in calculating the relevance score.

Once the relevance scores are calculated for one or more documents inthe search results index, those identified as meeting a search rankingthreshold requirement and/or having higher relevance scores may bepresented as search results to the user. FIG. 4 illustrates an exampleGUI screen for displaying search results to a user. In animplementation, the GUI screen 400 may represent a UI element foraccessing documents stored in a local and/or remote storage medium. TheGUI screen 400 may include a dropdown or selection box 410 fordisplaying the location of the file folder being searched and an inputbox 430 for entering one or more search terms.

Once one or more search terms are entered into the input box 430 and asearch is initiated, the techniques may be employed to search for theentered search term(s) (or one or more terms associated with the enteredsearch terms) in the location identified in the dropdown box 410. Afterone or more search results are identified as meeting the search rankingthreshold or having the highest relevance scores, they may be displayedin the display area 420 of screen 400. In one implementation, the searchresults may include an indication (e.g., icon) for the type of documentlocated, along with the name of the document. Furthermore, the usercategory information from the document properties may be used to providerelevant and current information to the user about the latest status ofthe identified documents. Thus, information may be provided about theuser who last modified or used the document, as well as the type ofactivity the user performed on the document. For example, when thesearch term “report” is used to search for documents in the “OneDrive”folder and three search results are identified, information may beprovided about the type of operation most recently performed on each ofthe identified search results and by which user. Other relevantinformation may also be displayed for each of the result results.Displayed information may include the most recent level of activity ofeach document, the lifecycle stage of the document, duration of the lastactive session, and/or the relevant activities performed on the documentwithin a predetermined period of time. For example, the displayedinformation for the first result provided in display area 420 mayinclude “Sue Jones printed page 3 four days ago.”

In this manner, the techniques may provide a significant advantage overcurrently used mechanisms of providing information about search results.Currently, most applications that offer search results simply identifythe date of the last modification. However, because they cannotdetermine the type of activities users performed on the document, theycannot differentiate between a user that made significant changes to thedocument and one that simply corrected a typo while reading thedocument. In both instances, according to conventional techniques, theuser may be identified as the last modifier of the document. This may bemisleading and inaccurate, as the latter reader did not make anysignificant modifications to the document. By identifying the type ofcategory of operation the last user performed on the document, moreaccurate and relevant information may be provided with search results.In an example, in addition to the last user and the type of operationthey performed, the time the last operation was performed may bedisplayed as an absolute date and time and/or with respect to thecurrent time (e.g., a certain number of hours, days, or months ago).Using a reference to the current time may provide a more user-friendlyframe of reference than simply including the absolute time and date. Forexample, by stating that the document was last reviewed by Stacy Brown 6hours ago (instead of providing the time and date it was reviewed), theuser can more readily see how recent Stacy's activities were.Alternatively or additionally, the actual time and date may bedisplayed, such as based on user preference.

FIG. 5 is a flow diagram depicting an exemplary method 500 forintelligently ranking search results based on, among other things,properties of documents identified in the search results. The method 500may be performed by a local or global search service. At 505, method 500may begin by receiving a search request. This may occur, for example, byreceiving a request from an application that provides a search option.The user may utilize a UI provided by the application to enter one ormore terms for searching. The application may then transmit the searchrequest to the local or global search service. The search request mayinclude the one or more terms entered by the user. Additionally, thesearch request may identify a storage location at which the searchshould be conducted. The storage location may be identified by the useror may be determined by the application providing the search option.Alternatively, no search location may be included in the search request,in which case, the search service may determine an appropriate datastore for conducting the search.

In one implementation, in addition to the terms and the search location,the search request may include contextual information or a pointer tosuch contextual information. The contextual information may includeinformation about the user; people, teams, groups, organizations and thelike that the user is associated with; sites or applications the userfrequently visits; and/or the degree with which the user is associatedwith items of contextual information.

After receiving the search request, method 500 may proceed to conduct asearch for the one or more terms (and one or more other terms associatedwith the terms, as discussed above) using an internal or external searchengine, at 510. This may be achieved by transmitting a search requestwhich includes the one or more terms and the storage location whichshould be searched to the internal or external search engine. The searchengine may then conduct the requested search at the identified locationand provide the search results in a search results index to the searchservice. Thus, method 500 may receive the search results index, at 515.

Upon receiving the search results index, method 500 may proceed toretrieve or access document properties that are related to searchrelevance for each of the documents included in the search resultsindex, at 520. These document properties may include those discussedwith respect to FIGS. 3A-3B such as document activity level, documentlifecycle stage, user categories associated with the document, sessiontime, session duration, relevant activities performed on the document,activity time and/or a user ID associated with each session or relevantactivity. These document properties may be used along with thecontextual information list to calculate a relevance score for eachdocument in the search results index, at 525. This may be achieved byutilizing one or more ML models. For example, ML model(s) may be used todetermine an appropriate relevance value and weight for each property.The relevance values may then be multiplied by their respective weightsand added together to calculate the final relevance score for eachdocument. It should be noted that the ML model(s) used may bepersonalized, global and/or hybrid, as discussed above.

The calculated relevance scores may then be used to rank the documentsin the search results index, at 530. Ranking may involve sorting thesearch results index based on the relevance scores. This may involve,for example, sorting the results such that documents having the higherrelevance scores are listed higher in the search results. Once thedocuments in the search results index are ranked, method 500 may proceedto identify a subset of the documents in the search results index forpresentation to the user, at 535. This may be performed to ensure morerelevant documents are presented to the user. In one implementation, theprocess of identifying a subset of documents may involve determining ifthe total number of documents in the search results index exceed apredetermined number. If the total number exceeds the predeterminednumber, a portion or number of the documents may be selected as thesubset of search results for presenting to the user. When the totalnumber does not exceed the predetermined number, however, the entiresearch results index may be identified for presenting to the user.

After a subset has been identified for presenting to the user, thesubset may be provided to the searching application for displaying tothe user, at 540. This may be achieved by sending the subset of searchresults along with their identified ranking (e.g., their relevance scoreand/or relative position). In this manner, the results may be presentedto the user according to their calculated relevance score such thatdocuments having higher relevance scores are displayed higher in thesearch results list.

FIG. 6 is a block diagram 600 illustrating an example softwarearchitecture 602, various portions of which may be used in conjunctionwith various hardware architectures herein described, which mayimplement any of the above-described features. FIG. 6 is a non-limitingexample of a software architecture and it will be appreciated that manyother architectures may be implemented to facilitate the functionalitydescribed herein. The software architecture 602 may execute on hardwaresuch as client devices, native application provider, web servers, serverclusters, external services, and other servers. A representativehardware layer 604 includes a processing unit 606 and associatedexecutable instructions 608. The executable instructions 608 representexecutable instructions of the software architecture 602, includingimplementation of the methods, modules and so forth described herein.

The hardware layer 604 also includes a memory/storage 610, which alsoincludes the executable instructions 608 and accompanying data. Thehardware layer 604 may also include other hardware modules 612.Instructions 608 held by processing unit 608 may be portions ofinstructions 608 held by the memory/storage 610.

The example software architecture 602 may be conceptualized as layers,each providing various functionality. For example, the softwarearchitecture 602 may include layers and components such as an operatingsystem (OS) 614, libraries 616, frameworks 618, applications 620, and apresentation layer 624. Operationally, the applications 620 and/or othercomponents within the layers may invoke API calls 624 to other layersand receive corresponding results 626. The layers illustrated arerepresentative in nature and other software architectures may includeadditional or different layers. For example, some mobile or specialpurpose operating systems may not provide the frameworks/middleware 618.

The OS 614 may manage hardware resources and provide common services.The OS 614 may include, for example, a kernel 628, services 630, anddrivers 632. The kernel 628 may act as an abstraction layer between thehardware layer 604 and other software layers. For example, the kernel628 may be responsible for memory management, processor management (forexample, scheduling), component management, networking, securitysettings, and so on. The services 630 may provide other common servicesfor the other software layers. The drivers 632 may be responsible forcontrolling or interfacing with the underlying hardware layer 604. Forinstance, the drivers 632 may include display drivers, camera drivers,memory/storage drivers, peripheral device drivers (for example, viaUniversal Serial Bus (USB)), network and/or wireless communicationdrivers, audio drivers, and so forth depending on the hardware and/orsoftware configuration.

The libraries 616 may provide a common infrastructure that may be usedby the applications 620 and/or other components and/or layers. Thelibraries 616 typically provide functionality for use by other softwaremodules to perform tasks, rather than rather than interacting directlywith the OS 614. The libraries 616 may include system libraries 634 (forexample, C standard library) that may provide functions such as memoryallocation, string manipulation, file operations. In addition, thelibraries 616 may include API libraries 636 such as media libraries (forexample, supporting presentation and manipulation of image, sound,and/or video data formats), graphics libraries (for example, an OpenGLlibrary for rendering 2D and 3D graphics on a display), databaselibraries (for example, SQLite or other relational database functions),and web libraries (for example, WebKit that may provide web browsingfunctionality). The libraries 616 may also include a wide variety ofother libraries 638 to provide many functions for applications 620 andother software modules.

The frameworks 618 (also sometimes referred to as middleware) provide ahigher-level common infrastructure that may be used by the applications620 and/or other software modules. For example, the frameworks 618 mayprovide various GUI functions, high-level resource management, orhigh-level location services. The frameworks 618 may provide a broadspectrum of other APIs for applications 620 and/or other softwaremodules.

The applications 620 include built-in applications 620 and/orthird-party applications 622. Examples of built-in applications 620 mayinclude, but are not limited to, a contacts application, a browserapplication, a location application, a media application, a messagingapplication, and/or a game application. Third-party applications 622 mayinclude any applications developed by an entity other than the vendor ofthe particular system. The applications 620 may use functions availablevia OS 614, libraries 616, frameworks 618, and presentation layer 624 tocreate user interfaces to interact with users.

Some software architectures use virtual machines, as illustrated by avirtual machine 628. The virtual machine 628 provides an executionenvironment where applications/modules can execute as if they wereexecuting on a hardware machine (such as the machine 600 of FIG. 6, forexample). The virtual machine 628 may be hosted by a host OS (forexample, OS 614) or hypervisor, and may have a virtual machine monitor626 which manages operation of the virtual machine 628 andinteroperation with the host operating system. A software architecture,which may be different from software architecture 602 outside of thevirtual machine, executes within the virtual machine 628 such as an OS650, libraries 652, frameworks 654, applications 656, and/or apresentation layer 658.

FIG. 7 is a block diagram illustrating components of an example machine700 configured to read instructions from a machine-readable medium (forexample, a machine-readable storage medium) and perform any of thefeatures described herein. The example machine 700 is in a form of acomputer system, within which instructions 716 (for example, in the formof software components) for causing the machine 700 to perform any ofthe features described herein may be executed. As such, the instructions716 may be used to implement methods or components described herein. Theinstructions 716 cause unprogrammed and/or unconfigured machine 700 tooperate as a particular machine configured to carry out the describedfeatures. The machine 700 may be configured to operate as a standalonedevice or may be coupled (for example, networked) to other machines. Ina networked deployment, the machine 700 may operate in the capacity of aserver machine or a client machine in a server-client networkenvironment, or as a node in a peer-to-peer or distributed networkenvironment. Machine 700 may be embodied as, for example, a servercomputer, a client computer, a personal computer (PC), a tabletcomputer, a laptop computer, a netbook, a set-top box (STB), a gamingand/or entertainment system, a smart phone, a mobile device, a wearabledevice (for example, a smart watch), and an Internet of Things (IoT)device. Further, although only a single machine 700 is illustrated, theterm “machine” includes a collection of machines that individually orjointly execute the instructions 716.

The machine 700 may include processors 710, memory 730, and I/Ocomponents 750, which may be communicatively coupled via, for example, abus 702. The bus 702 may include multiple buses coupling variouselements of machine 700 via various bus technologies and protocols. Inan example, the processors 710 (including, for example, a centralprocessing unit (CPU), a graphics processing unit (GPU), a digitalsignal processor (DSP), an ASIC, or a suitable combination thereof) mayinclude one or more processors 712 a to 712 n that may execute theinstructions 716 and process data. In some examples, one or moreprocessors 710 may execute instructions provided or identified by one ormore other processors 710. The term “processor” includes a multi-coreprocessor including cores that may execute instructionscontemporaneously. Although FIG. 7 shows multiple processors, themachine 700 may include a single processor with a single core, a singleprocessor with multiple cores (for example, a multi-core processor),multiple processors each with a single core, multiple processors eachwith multiple cores, or any combination thereof. In some examples, themachine 700 may include multiple processors distributed among multiplemachines.

The memory/storage 730 may include a main memory 732, a static memory734, or other memory, and a storage unit 736, both accessible to theprocessors 710 such as via the bus 702. The storage unit 736 and memory732, 734 store instructions 716 embodying any one or more of thefunctions described herein. The memory/storage 730 may also storetemporary, intermediate, and/or long-term data for processors 710. Theinstructions 716 may also reside, completely or partially, within thememory 732, 734, within the storage unit 736, within at least one of theprocessors 710 (for example, within a command buffer or cache memory),within memory at least one of I/O components 750, or any suitablecombination thereof, during execution thereof. Accordingly, the memory732, 734, the storage unit 736, memory in processors 710, and memory inI/O components 750 are examples of machine-readable media.

As used herein, “computer-readable medium” refers to a device able totemporarily or permanently store instructions and data that causemachine 700 to operate in a specific fashion. The term“computer-readable medium,” as used herein, may include bothcommunication media (e.g., transitory electrical or electromagneticsignals such as a carrier wave propagating through a medium) and storagemedia (i.e., tangible and/or non-transitory media). Non-limitingexamples of a computer readable storage media may include, but are notlimited to, nonvolatile memory (such as flash memory or read-only memory(ROM)), volatile memory (such as a static random-access memory (RAM) ora dynamic RAM), buffer memory, cache memory, optical storage media,magnetic storage media and devices, network-accessible or cloud storage,other types of storage, and/or any suitable combination thereof. Theterm “computer-readable storage media” applies to a single medium, orcombination of multiple media, used to store instructions (for example,instructions 716) for execution by a machine 700 such that theinstructions, when executed by one or more processors 710 of the machine700, cause the machine 700 to perform and one or more of the featuresdescribed herein. Accordingly, a “computer-readable storage media” mayrefer to a single storage device, as well as “cloud-based” storagesystems or storage networks that include multiple storage apparatus ordevices.

The I/O components 750 may include a wide variety of hardware componentsadapted to receive input, provide output, produce output, transmitinformation, exchange information, capture measurements, and so on. Thespecific I/O components 750 included in a particular machine will dependon the type and/or function of the machine. For example, mobile devicessuch as mobile phones may include a touch input device, whereas aheadless server or IoT device may not include such a touch input device.The particular examples of I/O components illustrated in FIG. 7 are inno way limiting, and other types of components may be included inmachine 700. The grouping of I/O components 750 are merely forsimplifying this discussion, and the grouping is in no way limiting. Invarious examples, the I/O components 750 may include user outputcomponents 752 and user input components 754. User output components 752may include, for example, display components for displaying information(for example, a liquid crystal display (LCD) or a projector), acousticcomponents (for example, speakers), haptic components (for example, avibratory motor or force-feedback device), and/or other signalgenerators. User input components 754 may include, for example,alphanumeric input components (for example, a keyboard or a touchscreen), pointing components (for example, a mouse device, a touchpad,or another pointing instrument), and/or tactile input components (forexample, a physical button or a touch screen that provides locationand/or force of touches or touch gestures) configured for receivingvarious user inputs, such as user commands and/or selections.

In some examples, the I/O components 750 may include biometriccomponents 756 and/or position components 762, among a wide array ofother environmental sensor components. The biometric components 756 mayinclude, for example, components to detect body expressions (forexample, facial expressions, vocal expressions, hand or body gestures,or eye tracking), measure biosignals (for example, heart rate or brainwaves), and identify a person (for example, via voice-, retina-, and/orfacial-based identification). The position components 762 may include,for example, location sensors (for example, a Global Position System(GPS) receiver), altitude sensors (for example, an air pressure sensorfrom which altitude may be derived), and/or orientation sensors (forexample, magnetometers).

The I/O components 750 may include communication components 764,implementing a wide variety of technologies operable to couple themachine 700 to network(s) 770 and/or device(s) 780 via respectivecommunicative couplings 772 and 782. The communication components 764may include one or more network interface components or other suitabledevices to interface with the network(s) 770. The communicationcomponents 764 may include, for example, components adapted to providewired communication, wireless communication, cellular communication,Near Field Communication (NFC), Bluetooth communication, Wi-Fi, and/orcommunication via other modalities. The device(s) 780 may include othermachines or various peripheral devices (for example, coupled via USB).

In some examples, the communication components 764 may detectidentifiers or include components adapted to detect identifiers. Forexample, the communication components 664 may include Radio FrequencyIdentification (RFID) tag readers, NFC detectors, optical sensors (forexample, one- or multi-dimensional bar codes, or other optical codes),and/or acoustic detectors (for example, microphones to identify taggedaudio signals). In some examples, location information may be determinedbased on information from the communication components 762, such as, butnot limited to, geo-location via Internet Protocol (IP) address,location via Wi-Fi, cellular, NFC, Bluetooth, or other wireless stationidentification and/or signal triangulation.

While various embodiments have been described, the description isintended to be exemplary, rather than limiting, and it is understoodthat many more embodiments and implementations are possible that arewithin the scope of the embodiments. Although many possible combinationsof features are shown in the accompanying figures and discussed in thisdetailed description, many other combinations of the disclosed featuresare possible. Any feature of any embodiment may be used in combinationwith or substituted for any otherfeature or element in any otherembodiment unless specifically restricted. Therefore, it will beunderstood that any of the features shown and/or discussed in thepresent disclosure may be implemented together in any suitablecombination. Accordingly, the embodiments are not to be restrictedexcept in light of the attached claims and their equivalents. Also,various modifications and changes may be made within the scope of theattached claims.

Generally, functions described herein (for example, the featuresillustrated in FIGS. 1-5) can be implemented using software, firmware,hardware (for example, fixed logic, finite state machines, and/or othercircuits), or a combination of these implementations. In the case of asoftware implementation, program code performs specified tasks whenexecuted on a processor (for example, a CPU or CPUs). The program codecan be stored in one or more machine-readable memory devices. Thefeatures of the techniques described herein are system-independent,meaning that the techniques may be implemented on a variety of computingsystems having a variety of processors. For example, implementations mayinclude an entity (for example, software) that causes hardware toperform operations, e.g., processors functional blocks, and so on. Forexample, a hardware device may include a machine-readable medium thatmay be configured to maintain instructions that cause the hardwaredevice, including an operating system executed thereon and associatedhardware, to perform operations. Thus, the instructions may function toconfigure an operating system and associated hardware to perform theoperations and thereby configure or otherwise adapt a hardware device toperform functions described above. The instructions may be provided bythe machine-readable medium through a variety of differentconfigurations to hardware elements that execute the instructions.

In the following, further features, characteristics and advantages ofthe invention will be described by means of items:

-   -   Item 1. A data processing system comprising:    -   a processor; and    -   a memory in communication with the processor, the memory storing        executable instructions that, when executed by the processor,        cause the data processing system to perform functions of:    -   receiving a search request containing one or more terms for        performing a search;    -   providing the one or more terms to a search engine for        conducting a search;    -   receiving a search results index containing a list of a        plurality of documents from the search engine, each of the        plurality of documents corresponding to at least one of the one        or more terms or to one or more other terms associated with the        at least one of the one or more terms;    -   accessing a plurality of properties associated with at least one        of the plurality of documents, the plurality of properties        including a user category associated with the at least one of        the plurality of documents;    -   calculating a relevance score for the at least one of the        plurality of documents based on at least one of the plurality of        properties;    -   selecting a subset of the plurality of documents for        presentation based at least on the calculated relevance score;        and    -   providing the subset of the plurality of documents for        presentation.    -   Item 2. The data processing system of item 1, wherein the        plurality of properties includes at least one of a level of        activity associated with the at least one of the plurality of        documents, a lifecycle stage associated with the at least one of        the plurality of documents, and one or more relevant activities        performed on the at least one of the plurality of documents.    -   Item 3. The data processing system of item 2, wherein the one or        more relevant activities performed on the at least one of the        plurality of documents includes an activity time and a user ID        for each of the one or more relevant activities.    -   Item 4. The data processing system of any of item 3, wherein the        one or more relevant activities are activities that indicate a        level of relevance for the at least one of the plurality of        documents.    -   Item 5. The data processing system of item 2, wherein each of        the level of activity, the lifecycle stage, and the one or more        relevant activities are associated with a weight.    -   Item 6. The data processing system of any of the preceding        items, wherein the user category associated with the at least        one of the plurality of documents includes at least one of a        user ID associated with the user category, a session time        associated with the user category and a session duration        associated with the user category.    -   Item 7. The data processing system of item 6, wherein at least        one of the session time and the session duration are associated        with a weight used in calculating the relevance score for the        document.    -   Item 8. A method for intelligently ranking search results        comprising:        -   receiving a search request containing one or more terms for            performing a search;        -   providing the one or more terms for conducting a search;        -   receiving a search results index containing a list of a            plurality of documents, each of the plurality of documents            corresponding to at least one of the one or more terms or to            one or more other terms associated with the at least one of            the one or more terms;        -   accessing a plurality of properties associated with at least            one of the plurality of documents, the plurality of            properties including a user category associated with the at            least one of the plurality of documents;        -   calculating a relevance score for the at least one of the            plurality of documents based on at least one of the            plurality of properties;        -   selecting a subset of the plurality of documents for            presentation based at least on the calculated relevance            score; and        -   providing the subset of the plurality of documents for            presentation.    -   Item 9. The method of item 8, wherein the plurality of        properties includes at least one of a level of activity        associated with the at least one of the plurality of documents,        a lifecycle stage associated with the at least one of the        plurality of documents, and one or more relevant activities        performed on the at least one of the plurality of documents.    -   Item 10. The method of item 9, wherein the one or more relevant        activities performed on the at least one of the plurality of        documents includes an activity time and a user ID for each of        the one or more relevant activities.    -   Item 11. The method of item 9, wherein each of the level of        activity, the lifecycle stage, and the one or more relevant        activities are associated with a weight.    -   Item 12. The method of any of items 8-11, wherein the relevance        score is calculated based on one of the plurality of properties        and on contextual information.    -   Item 13. The method of item 12, wherein the contextual        information includes information about at least one of: people,        teams, groups, or organizations associated with the user; sites        or applications the user has recently used; and the degree with        which the user is associated with items of the contextual        information.    -   Item 14. The method of any of items 8-13, wherein the user        category associated with the at least one of the plurality of        documents includes at least one of a user ID associated with the        user category, a session time associated with the user category        and a session duration associated with the user category.    -   Item 15. A computer readable storage media on which are stored        instructions that when executed cause a programmable device to:        -   receive a search request containing one or more terms for            performing a search;        -   providing the one or more terms for conducting a search;        -   receive a search results index containing a list of a            plurality of documents, each of the plurality of documents            corresponding to at least one of the one or more terms or to            one or more other terms associated with the at least one of            the one or more terms;        -   access a plurality of properties associated with at least            one of the plurality of documents, the plurality of            properties including a user category associated with the at            least one of the plurality of documents;        -   calculate a relevance score for the at least one of the            plurality of documents based on at least one of the            plurality of properties;        -   select a subset of the plurality of documents for            presentation based at least on the calculated relevance            score; and        -   provide the subset of the plurality of documents for            presentation.    -   Item 16. The computer readable storage media of item 15, wherein        the plurality of properties includes at least one of a level of        activity associated with the at least one of the plurality of        documents, a lifecycle stage associated with the at least one of        the plurality of documents, and one or more relevant activities        performed on the at least one of the plurality of documents.    -   Item 17. The computer readable storage media of item 16, wherein        the one or more relevant activities performed on the at least        one of the plurality of documents includes an activity time and        a user ID for each of the one or more relevant activities.    -   Item 18. The computer readable storage media of item 16, wherein        each of the level of activity, the lifecycle stage, and the one        or more relevant activities are associated with a relevance        value.    -   Item 19. The computer readable storage media of any of items        15-18, wherein the user category associated with the at least        one of the plurality of documents includes at least one of a        user ID associated with the user category, a session time        associated with the user category and a session duration        associated with the user category.    -   Item 20. The computer readable storage media of any of items        15-18, wherein the relevance score is calculated based on one of        the plurality of properties and on information contained in a        contextual information data structure.

While the foregoing has described what are considered to be the bestmode and/or other examples, it is understood that various modificationsmay be made therein and that the subject matter disclosed herein may beimplemented in various forms and examples, and that the teachings may beapplied in numerous applications, only some of which have been describedherein. It is intended by the following claims to claim any and allapplications, modifications and variations that fall within the truescope of the present teachings.

Unless otherwise stated, all measurements, values, ratings, positions,magnitudes, sizes, and other specifications that are set forth in thisspecification, including in the claims that follow, are approximate, notexact. They are intended to have a reasonable range that is consistentwith the functions to which they relate and with what is customary inthe art to which they pertain.

The scope of protection is limited solely by the claims that now follow.That scope is intended and should be interpreted to be as broad as isconsistent with the ordinary meaning of the language that is used in theclaims when interpreted in light of this specification and theprosecution history that follows, and to encompass all structural andfunctional equivalents. Notwithstanding, none of the claims are intendedto embrace subject matter that fails to satisfy the requirement ofSections 101, 102, or 103 of the Patent Act, nor should they beinterpreted in such a way. Any unintended embracement of such subjectmatter is hereby disclaimed.

Except as stated immediately above, nothing that has been stated orillustrated is intended or should be interpreted to cause a dedicationof any component, step, feature, object, benefit, advantage, orequivalent to the public, regardless of whether it is or is not recitedin the claims.

It will be understood that the terms and expressions used herein havethe ordinary meaning as is accorded to such terms and expressions withrespect to their corresponding respective areas of inquiry and studyexcept where specific meanings have otherwise been set forth herein.

Relational terms such as first and second and the like may be usedsolely to distinguish one entity or action from another withoutnecessarily requiring or implying any actual such relationship or orderbetween such entities or actions. The terms “comprises,” “comprising,”and any other variation thereof, are intended to cover a non-exclusiveinclusion, such that a process, method, article, or apparatus thatcomprises a list of elements does not include only those elements butmay include other elements not expressly listed or inherent to suchprocess, method, article, or apparatus. An element preceded by “a” or“an” does not, without further constraints, preclude the existence ofadditional identical elements in the process, method, article, orapparatus that comprises the element.

The Abstract of the Disclosure is provided to allow the reader toquickly identify the nature of the technical disclosure. It is submittedwith the understanding that it will not be used to interpret or limitthe scope or meaning of the claims. In addition, in the foregoingDetailed Description, it can be seen that various features are groupedtogether in various examples for the purpose of streamlining thedisclosure. This method of disclosure is not to be interpreted asreflecting an intention that any claim requires more features than theclaim expressly recites. Rather, as the following claims reflect,inventive subject matter lies in less than all features of a singledisclosed example. Thus, the following claims are hereby incorporatedinto the Detailed Description, with each claim standing on its own as aseparately claimed subject matter.

What is claimed is:
 1. A data processing system comprising: one or moreprocessors; and a memory in communication with the one or moreprocessors, the memory comprising executable instructions that, whenexecuted by, the one or more processors, cause the data processingsystem to perform functions of: receiving a search request containingone or more terms for performing a search; providing the one or moreterms to a search engine for conducting a search; receiving a searchresults index containing a list of a plurality of documents from thesearch engine, each of the plurality of documents corresponding to atleast one of the one or more terms; accessing a plurality of propertiesassociated with each of the plurality of documents, the plurality ofproperties including a user category associated with each of theplurality of documents; calculating a relevance score for each of theplurality of documents based on at least one of the plurality ofproperties; selecting a subset of the plurality of documents forpresentation based at least on the calculated relevance score; andproviding the subset of the plurality of documents for presentation,wherein the user category associated with each of the plurality ofdocuments is determined by: collecting data associated with a pluralityof activities performed on a document by a user within a given timeperiod, analyzing the plurality of activities to identify which of aplurality of user categories the plurality of activities is associatedwith, and designating the identified user category as the user categoryassociated with the document for the given time period.
 2. The dataprocessing system of claim 1, wherein the plurality of propertiesincludes at least one of a level of activity associated with each of theplurality of documents, a lifecycle stage associated with each of theplurality of documents, and one or more relevant activities performed oneach of the plurality of documents.
 3. The data processing system ofclaim 2, wherein the plurality of properties includes the level ofactivity associated with each of the plurality of documents, and the oneor more relevant activities performed on each of the plurality ofdocuments includes an activity time and a user ID for each of the one ormore relevant activities.
 4. The data processing system of claim 3,wherein the one or more relevant activities are activities that indicatea level of relevance for the at least one of the plurality of documents.5. The data processing system of claim 2, wherein each of the level ofactivity, the lifecycle stage, and the one or more relevant activitiesare associated with a weight.
 6. The data processing system of claim 1,wherein the user category associated with the at least one of theplurality of documents includes at least one of a user ID associatedwith the user category, a session time associated with the user categoryand a session duration associated with the user category.
 7. The dataprocessing system of claim 6, wherein the user category associated witheach of the plurality of documents includes the session time associatedwith the user category and the session duration associated with the usercategory and at least one of the session time and the session durationare associated with a weight used in calculating the relevance score forthe document.
 8. A method for intelligently ranking search resultscomprising: receiving a search request containing one or more terms forperforming a search; providing the one or more terms for conducting asearch; receiving a search results index containing a list of aplurality of documents, each of the plurality of documents correspondingto at least one of the one or more terms; accessing a plurality ofproperties associated with each of the plurality of documents, theplurality of properties including a user category associated with eachof the plurality of documents; calculating a relevance score for each ofthe plurality of documents based on at least one of the plurality ofproperties; selecting a subset of the plurality of documents forpresentation based at least on the calculated relevance score; andproviding the subset of the plurality of documents for presentation,wherein the user category associated with each of the plurality ofdocuments is determined by: collecting data associated with a pluralityof activities performed on a document by a user within a given timeperiod, analyzing the plurality of activities to identify which of aplurality of user categories the plurality of activities is associatedwith, and designating the identified user category as the user categoryassociated with the document for the given time period.
 9. The method ofclaim 8, wherein the plurality of properties includes at least one of alevel of activity associated with each of the plurality of documents, alifecycle stage associated with each one of the plurality of documents,and one or more relevant activities performed on each of the pluralityof documents.
 10. The method of claim 9, wherein the plurality ofproperties includes the level of activity associated with each of theplurality of documents and the one or more relevant activities performedon the at least one of the plurality of documents includes an activitytime and a user ID for each of the one or more relevant activities. 11.The method of claim 9, wherein each of the level of activity, thelifecycle stage, and the one or more relevant activities are associatedwith a weight.
 12. The method of claim 8, wherein the relevance score iscalculated based on one of the plurality of properties and on contextualinformation.
 13. The method of claim 12, wherein the contextualinformation includes information about at least one of: people, teams,groups, or organizations associated with the user; sites or applicationsthe user has recently used; and the degree with which the user isassociated with items of the contextual information.
 14. The method ofclaim 8, wherein the user category associated with the at least one ofthe plurality of documents includes at least one of a user ID associatedwith the user category, a session time associated with the user categoryand a session duration associated with the user category.
 15. Anon-transitory computer readable storage media on which are storedinstructions that when executed cause a programmable device to: receivea search request containing one or more terms for performing a search;provide the one or more terms for conducting a search; receive a searchresults index containing a list of a plurality of documents, each of theplurality of documents corresponding to at least one of the one or moreterms; access a plurality of properties associated with each of theplurality of documents, the plurality of properties including a usercategory associated with each of the plurality of documents; calculate arelevance score for the at least one each of the plurality of documentsbased on at least one of the plurality of properties; select a subset ofthe plurality of documents for presentation based at least on thecalculated relevance score; and provide the subset of the plurality ofdocuments for presentation, wherein the user category associated witheach of the plurality of documents is determined by: collecting dataassociated with a plurality of activities performed on a document by auser within a given time period, analyzing the plurality of activitiesto identify which of a plurality of user categories the plurality ofactivities is associated with, and designating the identified usercategory as the user category associated with the document for the giventime period.
 16. The non-transitory computer readable storage media ofclaim 15, wherein the plurality of properties includes each of a levelof activity associated with the at least one of the plurality ofdocuments, a lifecycle stage associated with each of the plurality ofdocuments, and one or more relevant activities performed on each of theplurality of documents.
 17. The computer non-transitory readable storagemedia of claim 16, wherein the plurality of properties includes thelevel of activity associated with each one of the plurality ofdocuments, and the one or more relevant activities performed on the atleast one of the plurality of documents includes an activity time and auser ID for each of the one or more relevant activities.
 18. Thecomputer non-transitory readable storage media of claim 16, wherein eachof the level of activity, the lifecycle stage, and the one or morerelevant activities are associated with a relevance value.
 19. Thecomputer non-transitory readable storage media of claim 15, wherein theuser category associated with the at least one of the plurality ofdocuments includes at least one of a user ID associated with the usercategory, a session time associated with the user category and a sessionduration associated with the user category.
 20. The non-transitorycomputer readable storage media of claim 15, wherein the relevance scoreis calculated based on one of the plurality of properties and oninformation contained in a contextual information data structure.